package main

/*
给定平面上n 对 互不相同 的点points ，其中 points[i] = [xi, yi] 。
回旋镖 是由点(i, j, k) 表示的元组 ，其中i和j之间的距离和i和k之间的距离相等（需要考虑元组的顺序）。
返回平面上所有回旋镖的数量。
*/
func main() {
	points := [][]int{{1, 1}, {2, 2}, {3, 3}}
	println(numberOfBoomerangs(points))

}

/**
 *	numberOfBoomerangs
 *	@Description: 枚举法
 *	@param points [][]int
 *	@return int
 */
func numberOfBoomerangs(points [][]int) int {
	n := len(points)
	count := 0
	dis := map[int]int{}
	for i := 0; i < n; i++ {
		for j := 0; j < n; j++ {
			if i == j {
				continue
			}
			tmpDis := (points[j][0]-points[i][0])*(points[j][0]-points[i][0]) + (points[j][1]-points[i][1])*(points[j][1]-points[i][1])
			dis[tmpDis]++
		}
		for _, v := range dis {
			count += v * (v - 1)
		}
		dis = make(map[int]int)
	}

	return count
}
